package com.tanhua.task;


/*
*  spring Task任务调度的步骤：
*            1 在启动类上使用注解开启任务调用 @EnableScheduling
*            2 编写类和方法
*                    类:要交给ioc容器管理
*                    方法：无参 无返回值 方法名任意
*            3 在方法上使用注解指定该方法的执行时间（执行间隔）
*
* */

import cn.hutool.core.date.DateUtil;
import com.tanhua.dao.AnalysisByDayMapper;
import com.tanhua.dao.LogMapper;
import com.tanhua.domain.AnalysisByDay;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class MyTask {

    @Autowired
    private LogMapper logMapper;
    @Autowired
    private AnalysisByDayMapper analysisByDayMapper;

    @Scheduled(cron = "00 46 11 * * ?") //每隔5秒执行一次   七子表达式
    public void aaaa() throws ParseException {
        System.out.println("日志表中统计记录数了...");
        //今天的日期（yyyy-MM-dd）
        String time = DateUtil.format(new Date(), "yyyy-MM-dd");
        //昨天的日志
        String yesterday = DateUtil.yesterday().toString("yyyy-MM-dd");


        //统计注册用户
        Integer numRegistered=logMapper.findnumRegistered("0102",time);
        //统计登录用户
        Integer numLogin=logMapper.findnumRegistered("0101",time);
        //统计活跃用户
        Integer numActive=logMapper.findnumActive(time);
        //统计留存用户
        Integer numRetention1d=logMapper.findnumRetention1d(yesterday,time);
        //创建tb_analysis_by_day表对应的实体
        AnalysisByDay analysisByDay = new AnalysisByDay();
        analysisByDay.setNumRegistered(numRegistered);
        analysisByDay.setNumLogin(numLogin);
        analysisByDay.setNumActive(numActive);
        analysisByDay.setNumRetention1d(numRetention1d);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = simpleDateFormat.parse(time);
        analysisByDay.setRecordDate(date);

        analysisByDay.setCreated(new Date());
        analysisByDay.setUpdated(new Date());
        //在tb_analysis_by_day表插入当天的统计数据
        analysisByDayMapper.insert(analysisByDay);
    }
}
